1. Technical Field
Embodiments of the present invention generally relate to power management. More particularly, certain embodiments relate to the coordination of power management activities between components of a computer system.
2. Discussion
Power management in modern computer systems plays an important role in conserving energy, managing heat dissipation, and improving system performance. For example, modern computer systems are increasingly designed to be used in settings where a reliable external power supply is not available, making power management important for energy conservation. Even when reliable external power supplies are available, careful power management within the computing system can reduce heat produced by the system enabling improved performance of the system. Computing systems generally have better performance at lower ambient temperatures because key components can run at higher speeds without damaging their circuitry. Many computing platforms such as dense servers, desktop computers and mobile computers, however, are constrained by heat dissipation issues.
One approach to power management involves the implementation of various power states in system devices, where placing a device into a relatively low power state reduces energy consumption. The tradeoff to operating a device in a low power state is typically a reduction in the level of performance of the device. It should be noted, however, that the operation of some devices may in fact be dependent upon on the operation of other devices. For example, a processor might have a cache that is snooped by other processors, where placing the processor in a lower power state could negatively affect snoop latencies experienced by the other processors. Simply put, a power state transition in one device may prevent other devices from functioning at a desired level of performance.
While the coordination of such device dependencies may be implemented through software, there remains considerable room for improvement. For example, as the number of system components increases, describing all of the device interrelationships in software can become very complex. Furthermore, in systems where multiple instances of an operating system are running (say, for example, one instance on each processor or package in a multiprocessor server), each instance of the operating system cannot take into consideration the power states of processors that it does not directly control or have access to internal device indicators. It should also be noted that some software coordination approaches poll the various devices for power condition updates, and can experience a significant delay in responding to the updates. The result is often a net energy increase and/or performance loss. Other software coordination approaches rely upon interrupts for power condition updates, where an increased number of dependencies can cause an increased potential for interrupts and a deterioration in performance.